在 JavaScript 裡一個等號 =
代表的意思是指定、賦值。
而兩個等號跟三個等號是用來比較數值。
兩等號 ==
:若兩邊型別不同會自動轉型再進行比較。
三等號 ===
:不做轉型直接比較。
容易造成的誤解:兩等號不檢查型別,三等號會檢查型別。
真相是:兩等號會自動轉型,三等號不會。
var a = 21;
var b = "21";
console.log(a==b); // true,b 字串被自動轉型成數字所以相等
console.log(a===b); // false,不做轉型直接比較
再來看看一些有趣的結果
true == 1; // true,左邊 true 布林值轉數字是 1
true == "true"; // false,"true" 字串轉成數字是 NaN
false == 0; // true,左邊 false 布林值轉數字是 0
false == "false"; // false,"false" 轉數字也是 NaN
[] == []; // false,記憶體位置不同
轉自 MDN 比較運算子
P.S. =>
是 ES6 的箭頭函式,不是運算子,可以用書寫順序不同來分別。
JavaScript 經常會對兩側數值做自動轉型,規則如下:
一般不會遇到太多極端的情況(如果遇到了就只能...),這裡有一個真值表可以仔細觀察轉型規則。
參考資料
0 陷阱!0 誤解!8 天重新認識 JavaScript!
MDN 比較運算子
真值表轉自 https://thomas-yang.me/projects/oh-my-dear-js/